Reihenfolge der Netzwerke in FBS

Falls mehrere →Netzwerke im FBS-Editor vorliegen, bestimmt Neuron Power Engineer die Reihenfolge, in der die Netzwerke →auszuwerten sind.

Regeln für die Reihenfolge

  1. Zuerst prüft Neuron Power Engineer, ob Netzwerke vorliegen, die laut der →IEC-Norm auswertbar sind.
    Netzwerke sind auswertbar, wenn keiner seiner Eingänge von einem noch nicht ausgewerteten Netzwerk abhängt. Beachten Sie: Nur falls Eingänge für ein Netzwerk von anderen Netzwerken als Ausgänge benutzt werden, so gilt das Netzwerk zunächst als nicht auswertbar.
    Falls alle Eingänge des Netzwerks Teil einer expliziten →Rückkopplungsschleife sind, wird dieses Netzwerk für die Auswertung zurückgestellt, bis alle abarbeitbaren Netzwerk ausgewertet wurden. Umgekehrt gilt: Ein Netzwerk mit zumindest einem auswertbaren Eingang oder einem Eingang, der Teil einer implizite Rückkopplungsschleife ist, wird von Neuron Power Engineer nicht für die Auswertung zurückgestellt (siehe Beispiel 3 unten).

    In den Worten der IEC-Norm

    • Kein Element eines Netzwerks darf ausgewertet werden, bevor die Zustände aller seiner Eingänge ausgewertet wurden.

    • Die Auswertung eines Netzwerk-Elements darf nicht abgeschlossen sein, bevor die Zustände aller seiner Ausgänge ausgewertet wurden.

    • Die Auswertung eines Netzwerks ist nicht abgeschlossen, bevor die Ausgänge aller seiner Elemente ausgewertet wurden, sogar falls das Netzwerk eines der Elemente für die Ausführungssteuerung enthält.

    Implementierungsabhängige Realisierung

    Die IEC-Norm definiert, dass es dem Anwender möglich sein muss, ein implementiererspezifisches Mittel zu verwenden, um die Reihenfolge der Ausführung der Elemente in einer expliziten →Rückkopplungsschleife zu bestimmen, z.B. durch die Auswahl einer Rückkopplungsvariable.

    Neuron Power Engineer versucht daher, eine Rückkopplungsschleife mit Hilfe von Rückkopplungsvariablen aufzulösen. Falls jedoch keine Variable in der Rückkopplungsschleife enthalten ist, werden die Aufrufe zum Auflösen der Rückkopplungsschleife verwendet.

    Als Folge empfiehlt Neuron Ihnen, solche Rückkopplungsvariablen in Rückkopplungsschleifen zu verwenden. Einerseits können Sie die Abarbeitungsreihenfolge der Netzwerk-Elemente mit Hilfe einer Rückkopplungsvariable besser steuern. Und andererseits bleiben Sie damit konform zur IEC-Norm, da Rückkopplungschleifen ohne Rückkopplungsvariable nicht in der IEC-Norm vorgesehen sind.

     

    Beachten Sie: Falls eine Variable als Array-Index selbst oder im Array-Index verwendet wird, betrachtet Neuron Power Engineer diese Variable ebenfalls als einen Eingang.

  2. Falls Neuron Power Engineer feststellt, dass

    • nur eines der Netzwerke auswertbar ist, werden die Anweisungen dieses Netzwerk ausgewertet.

    • mehrere Netzwerke oder kein einziges der Netzwerke auswertbar sind, bestimmt Neuron Power Engineer die grafische Position dieser Netzwerke zueinander. Dafür werden die Netzwerke von "oben links nach unten rechts" gereiht. Neuron Power Engineer wertet die Anweisungen jenes Netzwerk aus, dessen Anweisung am weitesten oben/links steht (oben gilt vor links).
      Beachten Sie: 2 Arten von Anweisungen sind möglich:

      • Aufrufsanweisungen (kurz: →Aufrufe): Aufrufe werden durch die Positionierung eines →Funktionsbausteins oder einer →Funktion erzeugt.

        Hiere sehen Sie Aufrufe der SUB-Funktion, der AND-Funktion bzw. des TON-Funktionsbausteins:


        Für Aufrufe ist die obere linke Ecke des Aufrufs ausschlaggebend (ohne einen evtl. angezeigten Instanznamen).

        Beispiele

        Der Aufruf des oberen NOT-Bausteins wird vor jenem des unteren gereiht (oben gilt vor links):

        Der Aufruf des linken NOT-Bausteins wird vor jenem des rechten gereiht:

        (Info)  AS-Elemente eines →AS-Netzwerks verhalten sich prinzipiell wie Aufrufe im Netzwerk. Beachten Sie jedoch, dass AS-Elemente laut vorgegebenen Ablaufregeln ausgewertet werden.

      • Zuweisungsanweisungen (kurz: →Zuweisungen): Zuweisungen werden durch die Positionierung eines Wertfelds und das Verbinden mit einem Aufruf oder anderen Wertfeld erzeugt.

        Hier sehen Sie Zuweisungen zur Variable var3 bzw. var5:

        Für Zuweisungen ist die Position des Eingangs des Wertfelds ausschlaggebend.

        Beispiele

        Das Wertfeld mit var1 ist die Anweisung am weitesten oben/links. Daher werden die Anweisungen des Netzwerks mit den rosa Wertfeldern zuerst ausgewertet und danach jene des Netzwerks mit den blauen Wertfeldern.

        Das Wertfeld mit var4 ist die Anweisung am weitesten oben/links. Daher werden die Anweisungen des Netzwerks mit den blauen Wertfeldern zuerst ausgewertet und danach jene des Netzwerks mit den rosa Wertfeldern.

        Das Wertfeld mit var5 ist die Anweisung am weitesten oben/links. Daher werden die Anweisungen des Netzwerks mit den blauen Wertfeldern zuerst ausgewertet und danach jene des Netzwerks mit den rosa Wertfeldern.

        Das Wertfeld mit var5 ist noch immer die Anweisung am weitesten oben/links, obwohl das Wertfeld mit var8 scheinbar weiter oben positioniert ist. Ausschlaggebend ist, dass der Eingang des Wertfelds mit var5 am weitesten oben/links liegt. Daher werden die Anweisungen des Netzwerks mit den blauen Wertfeldern zuerst ausgewertet und danach jene des Netzwerks mit den rosa Wertfeldern.

Nach der vollständigen Auswertung des Netzwerks werden die Regeln zur Auswertung des nächsten Netzwerks angewendet (beginnend mit dem 1. Schritt).

Gut zu wissen

(Graue Glühbirne) Die Regeln in diesem Artikel und die folgenden Beispiele gelten für die Standardkonfiguration von Neuron Power Engineer. Unterschiedliche Regeln werden angewendet, falls Sie mit Hilfe der Start-Option lc3.fbdStatementSortLC32 jene Abarbeitungsreihenfolge aktiviert haben, das dem Vorgängerprodukt logi.CAD/32 nachgebildet ist. Das dem Vorgängerprodukt nachgebildete Verhalten entspricht dem Verhalten im Vorgängerprodukt mit der logi.CAD/32-Umgebungsvariable LC32_SORTORDER_TAR_DEP_CHECK=1. Details zu den Regeln der Abarbeitungsreihenfolge für logi.CAD/32 finden Sie in der Online-Hilfe von logi.CAD/32. die Informationen zu LC32_SORTORDER_TAR_DEP_CHECK=1 finden Sie in der Dokumentation für Administratoren des Vorgängerprodukts (im Artikel "Defining Processing Variant Concerning Variables Used as Array Index").
Die Unterschiede zwischen logi.CAD/32 und Neuron Power Engineer in der Standardkonfiguration finden Sie in der englischen Beschreibung "Unterschiede: Vorgängerprodukt zum aktuellen Produkt", suchen Sie in der Beschreibung nach den Zeilen mit den Text "feedback loops" und "execution order".

Beispiele für die Reihenfolge

Die Reihenfolge der Netzwerke kann aufgrund der Abarbeitungsreihenfolge (= angezeigte Nummer im roten Rechteck) abgeleitet werden, die in den Beispielen für die Anweisungen der Netzwerke eingeblendet ist.

Beispiel 1: Abhängige und mehrere auswertbare Netzwerke

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW3 – Grund: Die Netzwerke NW1 und NW2 sind nicht auswertbar, da die Variable var3 vom Netzwerk NW3 abhängt. Hingegen ist bei NW3 und NW4 kein Eingang von einem der anderen Netzwerke abhängig. Da NW3 oberhalb von NW4 liegt (genauer: der Eingang des Wertfelds mit var1 in NW3 ist oberhalb dem Wertfeld mit var4 in NW4 positioniert), wird NW3 als erstes Netzwerk ausgewertet.

  2. NW1 – Grund: Nach der Abarbeitung von NW3 ist var3 ausgewertet. NW1, NW2 und NW4 sind nun daher auswertbar. Da NW1 oberhalb von NW4 und mehr links als NW2 liegt (genauer: der Eingang des Wertfelds mit var3 in NW1 ist am weitesten oben/links positioniert), wird NW1 als nächstes Netzwerk ausgewertet.

  3. NW2 – Grund: NW2 und NW4 sind auswertbar. Da NW2 oberhalb von NW4 liegt (genauer: der Eingang des Wertfelds mit var3 in NW2 ist oberhalb dem Wertfeld mit var4 in NW4), wird NW2 als nächstes Netzwerk ausgewertet.

  4. NW4 – Grund: Nur NW4 ist auswertbar.

Beispiel 2: Abhängige Netzwerke mit einer Variable als Array-Index

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW_3 – Grund: Die Netzwerke NW_1 und NW_2 sind nicht auswertbar, da die Variable Index, die in diesen Netzwerken als Array-Index verwendet wird, vom Netzwerk NW_3 abhängt. Somit ist nur NW_3 auswertbar.

  2. NW_1 – Grund: Nach der Abarbeitung von NW_1 ist Index ausgewertet. NW_1 und NW_2 sind nun daher auswertbar. Da NW_1 oberhalb von NW2 liegt (genauer: der Eingang des Wertfelds mit ArrVar11[Index] ist am weitesten oben/links positioniert), wird NW_1 als nächstes Netzwerk ausgewertet.

  3. NW_2 – Grund: Nur NW_2 ist auswertbar.

Das folgende Beispiel unterscheidet sich vom obigen Beispiel nur durch die Wertfelder ArrVar3[Index+1] in NW_A und NW_B:

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW_C – Grund: Weder das Netzwerk NW_A noch das Netzwerk NW_B sind auswertbar. NW_A ist nicht auswertbar, da ArrVar3[Index+1] vom Netzwerk NW_B abhängt (zusätzlich hängt die Variable Index, die in NW_A im Array-Index verwendet wird, vom Netzwerk NW_C ab). NW_B ist ebenfalls nicht auswertbar, da die Variable Index, die in NW_B im Array-Index verwendet wird, vom Netzwerk NW_C abhängt. Somit ist nur NW_C auswertbar.

  2. NW_B – Grund: Nur NW_B ist nach der Auswertung von Index auswertbar. Im Unterschied zum obigen Beispiel ist hier NW_A weiterhin nicht auswertbar, da ArrVar3[Index+1] weiterhin vom Netzwerk NW_B abhängt.

  3. NW_A – Grund: Nur NW_A ist auswertbar.

Beispiel 3: Netzwerke ohne und mit Rückkopplungsschleife

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW4 – Grund: Die Netzwerke NW1 und NW2 sind nicht auswertbar, da ihre Eingänge (= Variable var4 bzw. var3) von anderen Netzwerken abhängen. Hingegen ist bei NW3 und NW4 kein Eingang von einem der anderen Netzwerke abhängig. Da aber alle Eingänge von NW3 Teil einer expliziten Rückkopplungsschleife innerhalb von NW3 sind, wird NW3 für die Abarbeitung zurückgestellt. In Folge bleibt nur mehr NW4 für Auswertung.

  2. NW2 – Grund: Nach der Abarbeitung von NW4 ist var3 ausgewertet. NW2 ist daher auswertbar. NW3 ist zwar ebenfalls auswertbar, wird aber wegen der Rückkopplungsschleife wieder zurückgestellt.

  3. NW1 – Grund: Nach der Abarbeitung von NW2 ist var4 ausgewertet. NW1 ist daher auswertbar. NW3 ist zwar ebenfalls auswertbar, wird aber wegen der Rückkopplungsschleife wieder zurückgestellt.

  4. NW3 – Grund: Nur NW3 ist auswertbar.

Das folgende Beispiel unterscheidet sich vom obigen Beispiel nun insofern, dass die Eingänge von NW3 Teile einer impliziten Rückkopplungsschleife sind:

Die Netzwerke werden mit dieser Reihenfolge ausgewertet:

  1. NW3 – Grund: Die Netzwerke NW1 und NW2 sind nicht auswertbar, da ihre Eingänge (= Variable var4 bzw. var3) von anderen Netzwerken abhängen. Hingegen ist bei NW3 und NW4 kein Eingang von einem der anderen Netzwerke abhängig. NW4 wird hier nicht zurückgestellt, da keiner der Eingänge Teil einer expliziten Rückkopplungsschleife ist. Da NW3 oberhalb von NW4 liegt (genauer: der Eingang des Wertfelds mit var1 in NW3 ist oberhalb dem Wertfeld mit var7 in NW4 positioniert), wird NW3 als erstes Netzwerk ausgewertet.

  2. NW4 – Grund: Nur NW4 ist auswertbar.

  3. NW2 – Grund: Nach der Abarbeitung von NW4 ist var3 ausgewertet. NW2 ist daher auswertbar.

  4. NW1 – Grund: Nach der Abarbeitung von NW2 ist var4 ausgewertet. NW1 ist daher auswertbar.

Hinweis: Diese Reihenfolge der Netzwerke gilt auch, falls nur ein Eingang von NW3 Teil einer impliziten Rückkopplungsschleife ist und ein Eingang von NW3 Teil einer expliziten Rückkopplungsschleife ist. Die Netzwerke werden also in dieser Reihenfolge ausgewertet: NW3, NW4, NW2 und abschließend NW1

(Info)Im Netzwerk NW3 gilt nun jedoch eine unterschiedliche Reihenfolge der Anweisungen (siehe "Reihenfolge der FBS-Elemente innerhalb eines FBS-Netzwerks", wie Neuron Power Engineer die Reihenfolge im Netzwerk bestimmt).